home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / mercury / mercury.h < prev    next >
Text File  |  1995-01-06  |  5KB  |  132 lines

  1. /*
  2.  
  3. MercuryInstaller for MS-DOS Version 1.00a
  4. 共通ヘッダファイル
  5.  
  6. Copyright (c) 1994,95 Delmonta
  7.  
  8. */
  9.  
  10. #if    !defined(LSI_C) || !defined(__STDIO_H)
  11.     #include<stdio.h>    /* FILE型を使うため */
  12. #endif
  13. /*-----------------------------コンパイラの最適化----------------------------*/
  14. #ifdef    LSI_C
  15.     #pragma    optimize time
  16.     #pragma    regalo        /* 変数をレジスタに割り付け               */
  17.     #pragma    recursive    /* nonrecではauto変数の一部がstaticになる */
  18. #endif
  19. /*--------------------------------マクロ関数---------------------------------*/
  20. #define    CEIL(a,b)    (((a)+(b)-1)/(b)) /* aをbで割って端数を切り上げる */
  21. #define    MEMBERSOF(a)    (sizeof(a)/sizeof((a)[0]))    /* 配列の要素数 */
  22. /*--------------------------------マクロ定数---------------------------------*/
  23. #define    CON_XWIDTH        80            /* コンソールの桁数 */
  24. #define    CON_YWIDTH        24            /* コンソールの行数 */
  25. #define    CON_TABSIZE        8            /* タブの桁数(固定) */
  26. #define    TITLEWIDTH        43            /* 作品名の文字数   */
  27. #define    MAKEWIDTH        (CON_XWIDTH-TITLEWIDTH)    /* 作者名の文字数   */
  28. #define    VERSION            "1.00α"        /* バージョン番号   */
  29. /*------------------------コントロールコードを示す文字-----------------------*/
  30. #define    FKEY_F1        0x101
  31. #define    FKEY_F2        0x102
  32. #define    FKEY_F3        0x103
  33. #define    FKEY_F4        0x104
  34. #define    FKEY_F5        0x105
  35. #define    FKEY_F6        0x106
  36. #define    FKEY_F7        0x107
  37. #define    FKEY_F8        0x108
  38. #define    FKEY_F9        0x109
  39. #define    FKEY_F10    0x10a
  40. #define    FKEY_F11    0x10b
  41. #define    FKEY_F12    0x10c
  42.  
  43. #define    FKEY_UP        0x1e
  44. #define    FKEY_DOWN    0x1f
  45. #define    FKEY_RIGHT    0x1c
  46. #define    FKEY_LEFT    '\b'    /* 98ではBSと左カーソルは同じコード */
  47. #define    FKEY_INS    FKEY_F8
  48. #define    FKEY_DEL    FKEY_F4
  49.  
  50. #define    FKEY_ESC    0x1b
  51. #define    FKEY_CR        '\r'
  52. #define    FKEY_BREAK    3
  53. /*----------------------------型とグローバル変数-----------------------------*/
  54. typedef    int        bool;
  55. typedef    unsigned long    KEYWORD_T;
  56.  
  57. #ifdef    DEFGLOVAL
  58.     #define    GLOVAL        /* ... */
  59.     #define    DEFAULT(x)     = x
  60. #else
  61.     #define    GLOVAL        extern
  62.     #define    DEFAULT(x)    /* ... */
  63. #endif
  64.  
  65. GLOVAL    char    Separators[] DEFAULT(" \t\n");
  66. GLOVAL    char    DEFAULT_IDXFILENAME[] DEFAULT("helper.idx");
  67. GLOVAL    struct    DATA
  68. {
  69.     char    far    *title;
  70.     char    far    *make;
  71.     char    far    *dir;
  72.     char    far    *readme;
  73.     char    far    *manual;
  74.  
  75.     struct COPYDATA_T
  76.     {
  77.         char    far        *string;
  78.         int            isxcopy;
  79.         struct COPYDATA_T far    *next;
  80.     } far *copy;
  81.  
  82.     KEYWORD_T    keywords;
  83.     struct DATA far    *next;
  84. } far *Data DEFAULT(NULL);
  85.  
  86. GLOVAL    int    Datanum    DEFAULT(0);
  87. GLOVAL    char    *Keyword[32];
  88. GLOVAL    char    Keywordnum DEFAULT(0);
  89. GLOVAL    char    Drive DEFAULT('\0');
  90. GLOVAL    int    Flag_noignore DEFAULT(0);
  91. GLOVAL    int    Flag_isfmesc DEFAULT(0);
  92. /*---------------------------------_conio.c----------------------------------*/
  93. int    ds_getch(void);
  94. void    ds_ungetch(int c);
  95. int    ds_kbhit(void);
  96. int    ds_strinput(char *s,unsigned len);
  97. /*--------------------------------diettsr.c----------------------------------*/
  98. void    diet_init(void);
  99. void    diet_setmode(bool mode);
  100. /*--------------------------------idxfile.c----------------------------------*/
  101. void    readidxfile(char *filename);
  102. /*-------------------------------install.c-----------------------------------*/
  103. void    installer(struct DATA far *data);
  104. /*--------------------------------mcstdlib.c---------------------------------*/
  105. int    far_fputs(char far *p,FILE *fp);
  106. char    *strchop(char *s,size_t n);
  107. int    putmessage(char *s,...);
  108. void    showcursor(int f);
  109. void far *far_sbrk(size_t size);
  110. char far *far_strdup(const char far *s);
  111. /*---------------------------------menu.c------------------------------------*/
  112. void    menu(void);
  113. /*------------------------------patternmatch.c-------------------------------*/
  114. void    patternmatch_init(char *s);
  115. int    patternmatch(char far *s);
  116. /*---------------------------------start.c-----------------------------------*/
  117. int    main(int argc,char **argv);
  118. /*-------------------------------textviewer.c--------------------------------*/
  119. void    textviewer(struct DATA far *data);
  120. void    openwindow(int ysize,int xsize);
  121. void    closewindow(void);
  122. void    window_putstr(int ypos,char *format,...);
  123. int    window_strinput(char *message,char *buf,unsigned len);
  124. int    window_select(char *message,...);
  125. /*---------------------------プログラムについて------------------------------*/
  126. /*  このプログラムは本来ならばcompactモデルで組むべきである。farポインタを  */
  127. /* 非常に多用するので、smallモデルよりはよっぽどよい。しかし、現在私が使用し */
  128. /* ているLSI C-86試食版はsmallモデル専用なので、仕方がない。わざわざ他の処理 */
  129. /* 系(いちばん安いのはTurboCだろうがそれでもFM用はねえ・・・)を買うだけの経済的 */
  130. /* 余裕も積極的理由もないのでね。                                            */
  131. /*-----------------------------End of Mercury.h------------------------------*/
  132.